/*
 * AssimpImporter.h
 *
 *  Created on: Dec 24, 2013
 *      Author: knuke
 */

#ifndef ASSIMPIMPORTER_H_
#define ASSIMPIMPORTER_H_

#include <string>
#include <vector>
#include <ostream>

#include <assimp/Importer.hpp>
#include <assimp/scene.h>

#include "Importer.h"

struct aiScene;

namespace graphiclicious_converter
{
  class Node;
  class Mesh;
  class Model;
  class Material;
  class AssimpImporter : public Importer
  {
  public:
    AssimpImporter();
    virtual ~AssimpImporter();

    Model* importModel(std::string filename);

  private:
    Assimp::Importer* importer_;
    const aiScene* scene_;
    Model* model_;

    Node* processNode(aiNode* assimp_node);
    Mesh* processMesh(aiMesh* assimp_mesh);
    Material* processMaterial(aiMaterial* assimp_material);
  };
}

#endif /* ASSIMPIMPORTER_H_ */
